# 2.创建蓝图装饰器装饰视图函数
# 创建视图函数
# @app.route("/")
from flask import current_app, jsonify
from flask import session

from info import constants
from info import redis_store
from info.models import User, News
from info.utils.response_code import RET
from . import index_blu
from flask import render_template


@index_blu.route("/")
def index():
    # 测试redis仓库
    # redis_store.set("a4", "hello!")
    # # 测试session
    # session["a2"] = "出来吧，皮卡丘session a2"
    # print(session.get("a2"))

    # 右上角用户登录状态显示
    # 1.拿session数据（user_id是唯一的，拿他来判断）
    user_id = session.get("user_id")

    user = None

    # 2.查询数据库，为了拿到用户的相关信息
    try:
        user = User.query.get(user_id)
    except Exception as e:
        current_app.logger.error(e)

    # 点击排行
    # 查询数据库，查询news
    try:
        news_click = News.query.order_by(News.clicks.desc()).limit(constants.CLICK_RANK_MAX_NEWS)
    except Exception as e:
        return jsonify(errno=RET.DATAERR, errmsg="查询错误")

    # 3.把用户的相关数据传给前端
    data = {
        "user_info": user.to_dict() if user else None,  # 可以通过user.to_dict获取用户的信息 , 拿得到就user 拿不到就None
        "news_click": news_click
    }

    return render_template("news/index.html", data=data)


# 每个浏览器访问服务器的时候会自动发送一个GET请求，地址是/favicon.icon
# flask中提供了一个方法send_static_file("相对于static的文件路径")，自动寻找static目录下的文件
@index_blu.route("/favicon.ico")
def get_web_icon():
    return current_app.send_static_file("news/favicon.ico")
